//
// Created by yunnan xu on 2020/11/17.
//

#ifndef ANDROIDGRAPHICSDEMOS_RENDERITEM_H
#define ANDROIDGRAPHICSDEMOS_RENDERITEM_H

#include <memory>
#include <vector>
#include <gles3/gl32.h>
#include <glm.hpp>
#include "VertexAttrib.h"

class Buffer;
class Texture;
class Model;

/*
 * 一次渲染调用时，渲染所绘制的对象数据集合
 * 包括：
 *      模型
 *      纹理列表
 *      instanced 渲染所需的数据等
 *
 * */
class IRenderItem {

public:
    IRenderItem() = default;
    virtual ~ IRenderItem() = default;
    void AppendTexture(const std::shared_ptr<Texture>& texture);
    std::shared_ptr<Texture> GetTexture(int index);
    std::shared_ptr<Model> GetModel() ;

protected:
    std::shared_ptr<Model> model;
    std::vector<std::shared_ptr<Texture>> textureList;
};


/*
 * GLES RenderItem 所需要的属性
 *
 * */
template <class RenderItemType>
class IGLESRenderItem
{
public:
protected:
};


#endif //ANDROIDGRAPHICSDEMOS_RENDERITEM_H
